// Copyright (c) 2023 0x5BFA
// Licensed under the MIT License. See the LICENSE.

namespace FluentHub.Octokit.Models.v4
{
	/// <summary>
	/// A user is an individual's account on GitHub that owns repositories and can make new content.
	/// </summary>
	public class User
	{
		/// <summary>
		/// Determine if this repository owner has any items that can be pinned to their profile.
		/// </summary>
		/// <param name="type">Filter to only a particular kind of pinnable item.</param>
		public bool AnyPinnableItems { get; set; }

		/// <summary>
		/// A URL pointing to the user's public avatar.
		/// </summary>
		/// <param name="size">The size of the resulting square image.</param>
		public string AvatarUrl { get; set; }

		/// <summary>
		/// The user's public profile bio.
		/// </summary>
		public string Bio { get; set; }

		/// <summary>
		/// The user's public profile bio as HTML.
		/// </summary>
		public string BioHTML { get; set; }

		/// <summary>
		/// Could this user receive email notifications, if the organization had notification restrictions enabled?
		/// </summary>
		/// <param name="login">The login of the organization to check.</param>
		public bool CanReceiveOrganizationEmailsWhenNotificationsRestricted { get; set; }

		/// <summary>
		/// A list of commit comments made by this user.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		public CommitCommentConnection CommitComments { get; set; }

		/// <summary>
		/// The user's public profile company.
		/// </summary>
		public string Company { get; set; }

		/// <summary>
		/// The user's public profile company as HTML.
		/// </summary>
		public string CompanyHTML { get; set; }

		/// <summary>
		/// The collection of contributions this user has made to different repositories.
		/// </summary>
		/// <param name="from">Only contributions made at this time or later will be counted. If omitted, defaults to a year ago.</param>
		/// <param name="organizationID">The ID of the organization used to filter contributions.</param>
		/// <param name="to">Only contributions made before and up to (including) this time will be counted. If omitted, defaults to the current time or one year from the provided from argument.</param>
		public ContributionsCollection ContributionsCollection { get; set; }

		/// <summary>
		/// The user's Copilot endpoint information
		/// </summary>
		public CopilotEndpoints CopilotEndpoints { get; set; }

		/// <summary>
		/// Identifies the date and time when the object was created.
		/// </summary>
		public DateTimeOffset CreatedAt { get; set; }

		/// <summary>
		/// Humanized string of "Identifies the date and time when the object was created."
		/// <summary>
		public string CreatedAtHumanized { get; set; }

		/// <summary>
		/// Identifies the primary key from the database.
		/// </summary>
		public int? DatabaseId { get; set; }

		/// <summary>
		/// The user's publicly visible profile email.
		/// </summary>
		public string Email { get; set; }

		/// <summary>
		/// A list of enterprises that the user belongs to.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="membershipType">Filter enterprises returned based on the user's membership type.</param>
		/// <param name="orderBy">Ordering options for the User's enterprises.</param>
		public EnterpriseConnection Enterprises { get; set; }

		/// <summary>
		/// The estimated next GitHub Sponsors payout for this user/organization in cents (USD).
		/// </summary>
		public int EstimatedNextSponsorsPayoutInCents { get; set; }

		/// <summary>
		/// A list of users the given user is followed by.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		public FollowerConnection Followers { get; set; }

		/// <summary>
		/// A list of users the given user is following.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		public FollowingConnection Following { get; set; }

		/// <summary>
		/// Find gist by repo name.
		/// </summary>
		/// <param name="name">The gist name to find.</param>
		public Gist Gist { get; set; }

		/// <summary>
		/// A list of gist comments made by this user.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		public GistCommentConnection GistComments { get; set; }

		/// <summary>
		/// A list of the Gists the user has created.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="orderBy">Ordering options for gists returned from the connection</param>
		/// <param name="privacy">Filters Gists according to privacy.</param>
		public GistConnection Gists { get; set; }

		/// <summary>
		/// True if this user/organization has a GitHub Sponsors listing.
		/// </summary>
		public bool HasSponsorsListing { get; set; }

		/// <summary>
		/// The hovercard information for this user in a given context
		/// </summary>
		/// <param name="primarySubjectId">The ID of the subject to get the hovercard in the context of</param>
		public Hovercard Hovercard { get; set; }

		/// <summary>
		/// The Node ID of the User object
		/// </summary>
		public ID Id { get; set; }

		/// <summary>
		/// The interaction ability settings for this user.
		/// </summary>
		public RepositoryInteractionAbility InteractionAbility { get; set; }

		/// <summary>
		/// Whether or not this user is a participant in the GitHub Security Bug Bounty.
		/// </summary>
		public bool IsBountyHunter { get; set; }

		/// <summary>
		/// Whether or not this user is a participant in the GitHub Campus Experts Program.
		/// </summary>
		public bool IsCampusExpert { get; set; }

		/// <summary>
		/// Whether or not this user is a GitHub Developer Program member.
		/// </summary>
		public bool IsDeveloperProgramMember { get; set; }

		/// <summary>
		/// Whether or not this user is a GitHub employee.
		/// </summary>
		public bool IsEmployee { get; set; }

		/// <summary>
		/// Whether or not this user is following the viewer. Inverse of viewerIsFollowing
		/// </summary>
		public bool IsFollowingViewer { get; set; }

		/// <summary>
		/// Whether or not this user is a member of the GitHub Stars Program.
		/// </summary>
		public bool IsGitHubStar { get; set; }

		/// <summary>
		/// Whether or not the user has marked themselves as for hire.
		/// </summary>
		public bool IsHireable { get; set; }

		/// <summary>
		/// Whether or not this user is a site administrator.
		/// </summary>
		public bool IsSiteAdmin { get; set; }

		/// <summary>
		/// Whether the given account is sponsoring this user/organization.
		/// </summary>
		/// <param name="accountLogin">The target account's login.</param>
		public bool IsSponsoredBy { get; set; }

		/// <summary>
		/// True if the viewer is sponsored by this user/organization.
		/// </summary>
		public bool IsSponsoringViewer { get; set; }

		/// <summary>
		/// Whether or not this user is the viewing user.
		/// </summary>
		public bool IsViewer { get; set; }

		/// <summary>
		/// A list of issue comments made by this user.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="orderBy">Ordering options for issue comments returned from the connection.</param>
		public IssueCommentConnection IssueComments { get; set; }

		/// <summary>
		/// A list of issues associated with this user.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="filterBy">Filtering options for issues returned from the connection.</param>
		/// <param name="labels">A list of label names to filter the pull requests by.</param>
		/// <param name="orderBy">Ordering options for issues returned from the connection.</param>
		/// <param name="states">A list of states to filter the issues by.</param>
		public IssueConnection Issues { get; set; }

		/// <summary>
		/// Showcases a selection of repositories and gists that the profile owner has either curated or that have been selected automatically based on popularity.
		/// </summary>
		public ProfileItemShowcase ItemShowcase { get; set; }

		/// <summary>
		/// Calculate how much each sponsor has ever paid total to this maintainer via GitHub Sponsors. Does not include sponsorships paid via Patreon.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="orderBy">Ordering options for results returned from the connection.</param>
		public SponsorAndLifetimeValueConnection LifetimeReceivedSponsorshipValues { get; set; }

		/// <summary>
		/// A user-curated list of repositories
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		public UserListConnection Lists { get; set; }

		/// <summary>
		/// The user's public profile location.
		/// </summary>
		public string Location { get; set; }

		/// <summary>
		/// The username used to login.
		/// </summary>
		public string Login { get; set; }

		/// <summary>
		/// The estimated monthly GitHub Sponsors income for this user/organization in cents (USD).
		/// </summary>
		public int MonthlyEstimatedSponsorsIncomeInCents { get; set; }

		/// <summary>
		/// The user's public profile name.
		/// </summary>
		public string Name { get; set; }

		/// <summary>
		/// Find an organization by its login that the user belongs to.
		/// </summary>
		/// <param name="login">The login of the organization to find.</param>
		public Organization Organization { get; set; }

		/// <summary>
		/// Verified email addresses that match verified domains for a specified organization the user is a member of.
		/// </summary>
		/// <param name="login">The login of the organization to match verified domains from.</param>
		public List<string> OrganizationVerifiedDomainEmails { get; set; }

		/// <summary>
		/// A list of organizations the user belongs to.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="orderBy">Ordering options for the User's organizations.</param>
		public OrganizationConnection Organizations { get; set; }

		/// <summary>
		/// A list of packages under the owner.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="names">Find packages by their names.</param>
		/// <param name="orderBy">Ordering of the returned packages.</param>
		/// <param name="packageType">Filter registry package by type.</param>
		/// <param name="repositoryId">Find packages in a repository by ID.</param>
		public PackageConnection Packages { get; set; }

		/// <summary>
		/// A list of repositories and gists this profile owner can pin to their profile.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="types">Filter the types of pinnable items that are returned.</param>
		public PinnableItemConnection PinnableItems { get; set; }

		/// <summary>
		/// A list of repositories and gists this profile owner has pinned to their profile
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="types">Filter the types of pinned items that are returned.</param>
		public PinnableItemConnection PinnedItems { get; set; }

		/// <summary>
		/// Returns how many more items this profile owner can pin to their profile.
		/// </summary>
		public int PinnedItemsRemaining { get; set; }

		/// <summary>
		/// Find project by number.
		/// </summary>
		/// <param name="number">The project number to find.</param>
		public Project Project { get; set; }

		/// <summary>
		/// Find a project by number.
		/// </summary>
		/// <param name="number">The project number.</param>
		public ProjectV2 ProjectV2 { get; set; }

		/// <summary>
		/// A list of projects under the owner.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="orderBy">Ordering options for projects returned from the connection</param>
		/// <param name="search">Query to search projects by, currently only searching by name.</param>
		/// <param name="states">A list of states to filter the projects by.</param>
		public ProjectConnection Projects { get; set; }

		/// <summary>
		/// The HTTP path listing user's projects
		/// </summary>
		public string ProjectsResourcePath { get; set; }

		/// <summary>
		/// The HTTP URL listing user's projects
		/// </summary>
		public string ProjectsUrl { get; set; }

		/// <summary>
		/// A list of projects under the owner.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="orderBy">How to order the returned projects.</param>
		/// <param name="query">A project to search for under the the owner.</param>
		public ProjectV2Connection ProjectsV2 { get; set; }

		/// <summary>
		/// The user's profile pronouns
		/// </summary>
		public string Pronouns { get; set; }

		/// <summary>
		/// A list of public keys associated with this user.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		public PublicKeyConnection PublicKeys { get; set; }

		/// <summary>
		/// A list of pull requests associated with this user.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="baseRefName">The base ref name to filter the pull requests by.</param>
		/// <param name="headRefName">The head ref name to filter the pull requests by.</param>
		/// <param name="labels">A list of label names to filter the pull requests by.</param>
		/// <param name="orderBy">Ordering options for pull requests returned from the connection.</param>
		/// <param name="states">A list of states to filter the pull requests by.</param>
		public PullRequestConnection PullRequests { get; set; }

		/// <summary>
		/// Recent projects that this user has modified in the context of the owner.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		public ProjectV2Connection RecentProjects { get; set; }

		/// <summary>
		/// A list of repositories that the user owns.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="affiliations">Array of viewer's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the current viewer owns.</param>
		/// <param name="hasIssuesEnabled">If non-null, filters repositories according to whether they have issues enabled</param>
		/// <param name="isArchived">If non-null, filters repositories according to whether they are archived and not maintained</param>
		/// <param name="isFork">If non-null, filters repositories according to whether they are forks of another repository</param>
		/// <param name="isLocked">If non-null, filters repositories according to whether they have been locked</param>
		/// <param name="orderBy">Ordering options for repositories returned from the connection</param>
		/// <param name="ownerAffiliations">Array of owner's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the organization or user being viewed owns.</param>
		/// <param name="privacy">If non-null, filters repositories according to privacy. Internal repositories are considered private; consider using the visibility argument if only internal repositories are needed. Cannot be combined with the visibility argument.</param>
		/// <param name="visibility">If non-null, filters repositories according to visibility. Cannot be combined with the privacy argument.</param>
		public RepositoryConnection Repositories { get; set; }

		/// <summary>
		/// A list of repositories that the user recently contributed to.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="contributionTypes">If non-null, include only the specified types of contributions. The GitHub.com UI uses [COMMIT, ISSUE, PULL_REQUEST, REPOSITORY]</param>
		/// <param name="hasIssues">If non-null, filters repositories according to whether they have issues enabled</param>
		/// <param name="includeUserRepositories">If true, include user repositories</param>
		/// <param name="isLocked">If non-null, filters repositories according to whether they have been locked</param>
		/// <param name="orderBy">Ordering options for repositories returned from the connection</param>
		/// <param name="privacy">If non-null, filters repositories according to privacy</param>
		public RepositoryConnection RepositoriesContributedTo { get; set; }

		/// <summary>
		/// Find Repository.
		/// </summary>
		/// <param name="name">Name of Repository to find.</param>
		/// <param name="followRenames">Follow repository renames. If disabled, a repository referenced by its old name will return an error.</param>
		public Repository Repository { get; set; }

		/// <summary>
		/// Discussion comments this user has authored.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="onlyAnswers">Filter discussion comments to only those that were marked as the answer</param>
		/// <param name="repositoryId">Filter discussion comments to only those in a specific repository.</param>
		public DiscussionCommentConnection RepositoryDiscussionComments { get; set; }

		/// <summary>
		/// Discussions this user has started.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="answered">Filter discussions to only those that have been answered or not. Defaults to including both answered and unanswered discussions.</param>
		/// <param name="orderBy">Ordering options for discussions returned from the connection.</param>
		/// <param name="repositoryId">Filter discussions to only those in a specific repository.</param>
		/// <param name="states">A list of states to filter the discussions by.</param>
		public DiscussionConnection RepositoryDiscussions { get; set; }

		/// <summary>
		/// The HTTP path for this user
		/// </summary>
		public string ResourcePath { get; set; }

		/// <summary>
		/// Replies this user has saved
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="orderBy">The field to order saved replies by.</param>
		public SavedReplyConnection SavedReplies { get; set; }

		/// <summary>
		/// The user's social media accounts, ordered as they appear on the user's profile.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		public SocialAccountConnection SocialAccounts { get; set; }

		/// <summary>
		/// List of users and organizations this entity is sponsoring.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="orderBy">Ordering options for the users and organizations returned from the connection.</param>
		public SponsorConnection Sponsoring { get; set; }

		/// <summary>
		/// List of sponsors for this user or organization.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="orderBy">Ordering options for sponsors returned from the connection.</param>
		/// <param name="tierId">If given, will filter for sponsors at the given tier. Will only return sponsors whose tier the viewer is permitted to see.</param>
		public SponsorConnection Sponsors { get; set; }

		/// <summary>
		/// Events involving this sponsorable, such as new sponsorships.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="actions">Filter activities to only the specified actions.</param>
		/// <param name="includeAsSponsor">Whether to include those events where this sponsorable acted as the sponsor. Defaults to only including events where this sponsorable was the recipient of a sponsorship.</param>
		/// <param name="includePrivate">Whether or not to include private activities in the result set. Defaults to including public and private activities.</param>
		/// <param name="orderBy">Ordering options for activity returned from the connection.</param>
		/// <param name="period">Filter activities returned to only those that occurred in the most recent specified time period. Set to ALL to avoid filtering by when the activity occurred. Will be ignored if `since` or `until` is given.</param>
		/// <param name="since">Filter activities to those that occurred on or after this time.</param>
		/// <param name="until">Filter activities to those that occurred before this time.</param>
		public SponsorsActivityConnection SponsorsActivities { get; set; }

		/// <summary>
		/// The GitHub Sponsors listing for this user or organization.
		/// </summary>
		public SponsorsListing SponsorsListing { get; set; }

		/// <summary>
		/// The sponsorship from the viewer to this user/organization; that is, the sponsorship where you're the sponsor.
		/// </summary>
		/// <param name="activeOnly">Whether to return the sponsorship only if it's still active. Pass false to get the viewer's sponsorship back even if it has been cancelled.</param>
		public Sponsorship SponsorshipForViewerAsSponsor { get; set; }

		/// <summary>
		/// The sponsorship from this user/organization to the viewer; that is, the sponsorship you're receiving.
		/// </summary>
		/// <param name="activeOnly">Whether to return the sponsorship only if it's still active. Pass false to get the sponsorship back even if it has been cancelled.</param>
		public Sponsorship SponsorshipForViewerAsSponsorable { get; set; }

		/// <summary>
		/// List of sponsorship updates sent from this sponsorable to sponsors.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="orderBy">Ordering options for sponsorship updates returned from the connection.</param>
		public SponsorshipNewsletterConnection SponsorshipNewsletters { get; set; }

		/// <summary>
		/// The sponsorships where this user or organization is the maintainer receiving the funds.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="activeOnly">Whether to include only sponsorships that are active right now, versus all sponsorships this maintainer has ever received.</param>
		/// <param name="includePrivate">Whether or not to include private sponsorships in the result set</param>
		/// <param name="orderBy">Ordering options for sponsorships returned from this connection. If left blank, the sponsorships will be ordered based on relevancy to the viewer.</param>
		public SponsorshipConnection SponsorshipsAsMaintainer { get; set; }

		/// <summary>
		/// The sponsorships where this user or organization is the funder.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="activeOnly">Whether to include only sponsorships that are active right now, versus all sponsorships this sponsor has ever made.</param>
		/// <param name="maintainerLogins">Filter sponsorships returned to those for the specified maintainers. That is, the recipient of the sponsorship is a user or organization with one of the given logins.</param>
		/// <param name="orderBy">Ordering options for sponsorships returned from this connection. If left blank, the sponsorships will be ordered based on relevancy to the viewer.</param>
		public SponsorshipConnection SponsorshipsAsSponsor { get; set; }

		/// <summary>
		/// Repositories the user has starred.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="orderBy">Order for connection</param>
		/// <param name="ownedByViewer">Filters starred repositories to only return repositories owned by the viewer.</param>
		public StarredRepositoryConnection StarredRepositories { get; set; }

		/// <summary>
		/// The user's description of what they're currently doing.
		/// </summary>
		public UserStatus Status { get; set; }

		/// <summary>
		/// Suggested names for user lists
		/// </summary>
		public List<UserListSuggestion> SuggestedListNames { get; set; }

		/// <summary>
		/// Repositories the user has contributed to, ordered by contribution rank, plus repositories the user has created
		/// </summary>
		/// <param name="orderBy">Ordering options for repositories returned from the connection</param>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="since">How far back in time to fetch contributed repositories</param>
		public RepositoryConnection TopRepositories { get; set; }

		/// <summary>
		/// The amount in United States cents (e.g., 500 = $5.00 USD) that this entity has spent on GitHub to fund sponsorships. Only returns a value when viewed by the user themselves or by a user who can manage sponsorships for the requested organization.
		/// </summary>
		/// <param name="since">Filter payments to those that occurred on or after this time.</param>
		/// <param name="sponsorableLogins">Filter payments to those made to the users or organizations with the specified usernames.</param>
		/// <param name="until">Filter payments to those that occurred before this time.</param>
		public int? TotalSponsorshipAmountAsSponsorInCents { get; set; }

		/// <summary>
		/// The user's Twitter username.
		/// </summary>
		public string TwitterUsername { get; set; }

		/// <summary>
		/// Identifies the date and time when the object was last updated.
		/// </summary>
		public DateTimeOffset UpdatedAt { get; set; }

		/// <summary>
		/// Humanized string of "Identifies the date and time when the object was last updated."
		/// <summary>
		public string UpdatedAtHumanized { get; set; }

		/// <summary>
		/// The HTTP URL for this user
		/// </summary>
		public string Url { get; set; }

		/// <summary>
		/// Can the viewer pin repositories and gists to the profile?
		/// </summary>
		public bool ViewerCanChangePinnedItems { get; set; }

		/// <summary>
		/// Can the current viewer create new projects on this owner.
		/// </summary>
		public bool ViewerCanCreateProjects { get; set; }

		/// <summary>
		/// Whether or not the viewer is able to follow the user.
		/// </summary>
		public bool ViewerCanFollow { get; set; }

		/// <summary>
		/// Whether or not the viewer is able to sponsor this user/organization.
		/// </summary>
		public bool ViewerCanSponsor { get; set; }

		/// <summary>
		/// Whether or not this user is followed by the viewer. Inverse of isFollowingViewer.
		/// </summary>
		public bool ViewerIsFollowing { get; set; }

		/// <summary>
		/// True if the viewer is sponsoring this user/organization.
		/// </summary>
		public bool ViewerIsSponsoring { get; set; }

		/// <summary>
		/// A list of repositories the given user is watching.
		/// </summary>
		/// <param name="first">Returns the first _n_ elements from the list.</param>
		/// <param name="after">Returns the elements in the list that come after the specified cursor.</param>
		/// <param name="last">Returns the last _n_ elements from the list.</param>
		/// <param name="before">Returns the elements in the list that come before the specified cursor.</param>
		/// <param name="affiliations">Affiliation options for repositories returned from the connection. If none specified, the results will include repositories for which the current viewer is an owner or collaborator, or member.</param>
		/// <param name="hasIssuesEnabled">If non-null, filters repositories according to whether they have issues enabled</param>
		/// <param name="isLocked">If non-null, filters repositories according to whether they have been locked</param>
		/// <param name="orderBy">Ordering options for repositories returned from the connection</param>
		/// <param name="ownerAffiliations">Array of owner's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the organization or user being viewed owns.</param>
		/// <param name="privacy">If non-null, filters repositories according to privacy. Internal repositories are considered private; consider using the visibility argument if only internal repositories are needed. Cannot be combined with the visibility argument.</param>
		/// <param name="visibility">If non-null, filters repositories according to visibility. Cannot be combined with the privacy argument.</param>
		public RepositoryConnection Watching { get; set; }

		/// <summary>
		/// A URL pointing to the user's public website/blog.
		/// </summary>
		public string WebsiteUrl { get; set; }
	}
}
